#1、有这样的一个列表，深度不可知，列表里面还会嵌套列表，
#我想要把这个列表从左到右拼接成一个新的列表，且顺序不变
#举例：[12,33,[11,22,33,[55,66,99]],[55,66]]
#变成：[12, 33, 11, 22, 33, 55, 66, 99, 55, 66]

# def ins(a:list)->list:
#     list1=[]
#     for i in a:
#         if isinstance(i,list):
#             list1.extend(ins(i))   #递归
#         else:
#             list1.append(i)
#     return list1
#
# print(ins([12,33,[11,22,33,[55,66,99]],[55,66]]))








#2、编写装饰器，为多个函数加上认证的功能（用户的账号密码）
 #要求登录成功一次，后续的函数都无需输入用户名和密码
# result = False
# def decorate(func):
#
#    def luoji(*args,**kwargs):
#         global result
#         if result==True:                  #if result=True
#             print("免登录")
#             func(*args,**kwargs)
#         else:
#             name = input("输入用户名:")
#             password=input("输入密码:")
#             if name=="admin" and password=="123456":
#                 print("登陆成功")
#                 func(*args,**kwargs)   #调用被装饰的函数
#                 result=True
#             else:
#                 print("登陆失败")
#    return luoji
#
# @decorate
# def ins(good):
#     print(f"{good}去买东西")
#
# ins("薯片")
#
# @decorate
# def inss(goods):
#     print(f"{goods}去买东西")
# inss("西瓜")





#3、请实现一个装饰器，把函数的返回值+100然后返回
# def decorate(func):
#     def luoji(num):
#         print(f"原来的数:{num}")
#         num=num+100
#         func(num)
#         return num
#     return luoji
#
# @decorate
# def aaa(num):
#     print(f"后来的值:{num}")
#
# print(aaa(1))




#4、请实现一个装饰器，通过一次调用使函数重复执行5次
# def decorate(func):
#     def luoji(*args,**kwargs):
#         for i in range(5):
#             func(*args,**kwargs)
#     return luoji
#
# @decorate
#
# def aaa():
#     print("啦啦啦")
#
# aaa()




#5、输入任意个字符串,分别实现从小到大输出和从大到小输出
# def decorate(func):
#     def luoji(*args,**kwargs):
#         func(*args,**kwargs)
#         list1=[int(i) for i in args]
#         list2=sorted(list1,reverse=True)
#         list3=sorted(list1,reverse=False)
#         return f"倒序:{list2}\n正序:{list3}"
#     return luoji
#
# @decorate
# def aaa(*args):
#     print(f"原始输入:{[i for i in args]}")   #或者{args}
#
# print(aaa("3","100","200","300"))








#6、接收n个数字，求这些参数数字的和    #不用用到新知识???
# def ins(*args):
#     return sum(args)
#
# print(ins(1,2,3))





#7、编写一个函数，实现数字的自增（从0开始，每调用一次，数字+1）
# def ins():
#     num=0
#     def a():
#         nonlocal num
#         num=num+1
#         return num
#     return a
#
# aaa=ins()
# print(aaa)   #地址值
# print(aaa())
# print(aaa())
# print(aaa())


















